<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>GMimeStreamBuffer: GMime 3.0 Reference Manual</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="GMime 3.0 Reference Manual">
<link rel="up" href="Streams.html" title="Streams">
<link rel="prev" href="GMimeStreamFilter.html" title="GMimeStreamFilter">
<link rel="next" href="GMimeStreamPipe.html" title="GMimeStreamPipe">
<meta name="generator" content="GTK-Doc V1.32 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
<td width="100%" align="left" class="shortcuts">
<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
                  <a href="#GMimeStreamBuffer.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
                  <a href="#GMimeStreamBuffer.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><a accesskey="u" href="Streams.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="p" href="GMimeStreamFilter.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="GMimeStreamPipe.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
<a name="GMimeStreamBuffer"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="GMimeStreamBuffer.top_of_page"></a>GMimeStreamBuffer</span></h2>
<p>GMimeStreamBuffer — A buffered stream</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
<a name="GMimeStreamBuffer.functions"></a><h2>Functions</h2>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="functions_proto_type">
<col class="functions_proto_name">
</colgroup>
<tbody>
<tr>
<td class="function_type">
<a class="link" href="GMimeStream.html" title="GMimeStream"><span class="returnvalue">GMimeStream</span></a> *
</td>
<td class="function_name">
<a class="link" href="GMimeStreamBuffer.html#g-mime-stream-buffer-new" title="g_mime_stream_buffer_new ()">g_mime_stream_buffer_new</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">ssize_t</span>
</td>
<td class="function_name">
<a class="link" href="GMimeStreamBuffer.html#g-mime-stream-buffer-gets" title="g_mime_stream_buffer_gets ()">g_mime_stream_buffer_gets</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="GMimeStreamBuffer.html#g-mime-stream-buffer-readln" title="g_mime_stream_buffer_readln ()">g_mime_stream_buffer_readln</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect1">
<a name="GMimeStreamBuffer.other"></a><h2>Types and Values</h2>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="other_proto_type">
<col class="other_proto_name">
</colgroup>
<tbody>
<tr>
<td class="datatype_keyword">enum</td>
<td class="function_name"><a class="link" href="GMimeStreamBuffer.html#GMimeStreamBufferMode" title="enum GMimeStreamBufferMode">GMimeStreamBufferMode</a></td>
</tr>
<tr>
<td class="datatype_keyword">struct</td>
<td class="function_name"><a class="link" href="GMimeStreamBuffer.html#GMimeStreamBuffer-struct" title="struct GMimeStreamBuffer">GMimeStreamBuffer</a></td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect1">
<a name="GMimeStreamBuffer.object-hierarchy"></a><h2>Object Hierarchy</h2>
<pre class="screen">    GObject
    <span class="lineart">╰──</span> <a class="link" href="GMimeStream.html" title="GMimeStream">GMimeStream</a>
        <span class="lineart">╰──</span> GMimeStreamBuffer
</pre>
</div>
<div class="refsect1">
<a name="GMimeStreamBuffer.description"></a><h2>Description</h2>
<p>A <a class="link" href="GMimeStreamBuffer.html" title="GMimeStreamBuffer"><span class="type">GMimeStreamBuffer</span></a> can be used on top of any other type of stream
and has 3 modes: block reads, block writes, and cached reads. Block
reads are especially useful if you will be making a lot of small
reads from a stream that accesses the file system. Block writes are
useful for very much the same reason. The final mode, cached reads,
can become memory intensive but can be very helpful when inheriting
from a stream that does not support seeking (Note: this mode is the
least tested so be careful using it).</p>
</div>
<div class="refsect1">
<a name="GMimeStreamBuffer.functions_details"></a><h2>Functions</h2>
<div class="refsect2">
<a name="g-mime-stream-buffer-new"></a><h3>g_mime_stream_buffer_new ()</h3>
<pre class="programlisting"><a class="link" href="GMimeStream.html" title="GMimeStream"><span class="returnvalue">GMimeStream</span></a> *
g_mime_stream_buffer_new (<em class="parameter"><code><a class="link" href="GMimeStream.html" title="GMimeStream"><span class="type">GMimeStream</span></a> *source</code></em>,
                          <em class="parameter"><code><a class="link" href="GMimeStreamBuffer.html#GMimeStreamBufferMode" title="enum GMimeStreamBufferMode"><span class="type">GMimeStreamBufferMode</span></a> mode</code></em>);</pre>
<p>Creates a new GMimeStreamBuffer object.</p>
<div class="refsect3">
<a name="g-mime-stream-buffer-new.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>source</p></td>
<td class="parameter_description"><p>source stream</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>mode</p></td>
<td class="parameter_description"><p>buffering mode</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="g-mime-stream-buffer-new.returns"></a><h4>Returns</h4>
<p> a new buffer stream with source <em class="parameter"><code>source</code></em>
and mode <em class="parameter"><code>mode</code></em>
.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="g-mime-stream-buffer-gets"></a><h3>g_mime_stream_buffer_gets ()</h3>
<pre class="programlisting"><span class="returnvalue">ssize_t</span>
g_mime_stream_buffer_gets (<em class="parameter"><code><a class="link" href="GMimeStream.html" title="GMimeStream"><span class="type">GMimeStream</span></a> *stream</code></em>,
                           <em class="parameter"><code><span class="type">char</span> *buf</code></em>,
                           <em class="parameter"><code><span class="type">size_t</span> max</code></em>);</pre>
<p>Reads in at most one less than <em class="parameter"><code>max</code></em>
 characters from <em class="parameter"><code>stream</code></em>
 and
stores them into the buffer pointed to by <em class="parameter"><code>buf</code></em>
. Reading stops after
an EOS or newline ('\n'). If a newline is read, it is stored into
the buffer. A '\0' is stored after the last character in the
buffer.</p>
<div class="refsect3">
<a name="g-mime-stream-buffer-gets.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>stream</p></td>
<td class="parameter_description"><p>stream</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>buf</p></td>
<td class="parameter_description"><p>line buffer</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>max</p></td>
<td class="parameter_description"><p>max length of a line</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="g-mime-stream-buffer-gets.returns"></a><h4>Returns</h4>
<p> the number of characters read into <em class="parameter"><code>buf</code></em>
on success or <code class="literal">-1</code>
on fail.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="g-mime-stream-buffer-readln"></a><h3>g_mime_stream_buffer_readln ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
g_mime_stream_buffer_readln (<em class="parameter"><code><a class="link" href="GMimeStream.html" title="GMimeStream"><span class="type">GMimeStream</span></a> *stream</code></em>,
                             <em class="parameter"><code><span class="type">GByteArray</span> *buffer</code></em>);</pre>
<p>Reads a single line into <em class="parameter"><code>buffer</code></em>
.</p>
<div class="refsect3">
<a name="g-mime-stream-buffer-readln.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>stream</p></td>
<td class="parameter_description"><p>stream</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>buffer</p></td>
<td class="parameter_description"><p>output buffer</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
</div>
</div>
<div class="refsect1">
<a name="GMimeStreamBuffer.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
<a name="GMimeStreamBufferMode"></a><h3>enum GMimeStreamBufferMode</h3>
<p>The buffering mode for a <a class="link" href="GMimeStreamBuffer.html" title="GMimeStreamBuffer"><span class="type">GMimeStreamBuffer</span></a> stream.</p>
<div class="refsect3">
<a name="GMimeStreamBufferMode.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="300px" class="enum_members_name">
<col class="enum_members_description">
<col width="200px" class="enum_members_annotations">
</colgroup>
<tbody>
<tr>
<td class="enum_member_name"><p><a name="GMIME-STREAM-BUFFER-BLOCK-READ:CAPS"></a>GMIME_STREAM_BUFFER_BLOCK_READ</p></td>
<td class="enum_member_description">
<p>Read in 4k blocks.</p>
</td>
<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GMIME-STREAM-BUFFER-BLOCK-WRITE:CAPS"></a>GMIME_STREAM_BUFFER_BLOCK_WRITE</p></td>
<td class="enum_member_description">
<p>Write in 4k blocks.</p>
</td>
<td class="enum_member_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="GMimeStreamBuffer-struct"></a><h3>struct GMimeStreamBuffer</h3>
<pre class="programlisting">struct GMimeStreamBuffer;</pre>
<p>A buffered stream wrapper around any <a class="link" href="GMimeStream.html" title="GMimeStream"><span class="type">GMimeStream</span></a> object.</p>
<div class="refsect3">
<a name="GMimeStreamBuffer.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="300px" class="struct_members_name">
<col class="struct_members_description">
<col width="200px" class="struct_members_annotations">
</colgroup>
<tbody></tbody>
</table></div>
</div>
</div>
</div>
<div class="refsect1">
<a name="GMimeStreamBuffer.see-also"></a><h2>See Also</h2>
<p><a class="link" href="GMimeStream.html" title="GMimeStream"><span class="type">GMimeStream</span></a></p>
</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.32</div>
</body>
</html>